Continuous integration (CI) in software development is part of quality control for coding computer software. It acts to reduce the time needed to get a particular functionality working while at the same time improving quality. This is accomplished by providing instant feedback of how new code affects an overall solution or system.
A CI system watches a code repository for changes to source code, as provided by source control management (SCM) components. As soon as a change to a code base is committed, the CI system builds the code and runs one or more quality tests.
With the rise in popularity of cloud computing and software-as-a-service (SaaS), code changes, when accepted, are typically available to customers immediately. This is known as Continuous Delivery. This is in stark contrast to the past, where a product lifecycle included an extensive testing period (typically both alpha and beta-testing) before being made available to customers.
The tests run on altered code every time a code change is made are pre-selected by an administrator, typically on an overall project level. Thus, for a given project, the same list of tests will be used to test every portion of code changed. This can cause long CI cycles due to irrelevant tests being performed on code sections that don't require such tests. While this was not a problem in the past, the rise of Continuous Delivery causes this to become a problem.